#pragma once

#include <QObject>
#include "question/question.h"
#include <QJsonArray>
#include <QJsonObject>
//#include <QJsonValue>
#include <QJsonDocument>


class ExamPaper : public QObject
{
    Q_OBJECT
public:
    explicit ExamPaper(QObject *parent = nullptr);
    ~ExamPaper();

    // 从JSON数据加载试卷信息 --- 返回是否加载成功消息  --导入
    bool fromJson(const QJsonObject &json);

    // 转换为Json数据，  这个不操作输入的json吗？
    QJsonObject  toJson() const;

    //获取试卷信息
    QString title()const { return m_title; }
    QString studentName() const { return m_studentName; }
    QString studentCode() const { return m_studentCode; }
    // 获取所有题目
    QList<Question*> questions() const { return m_questions; }
    
    // 按题型获取题目
    QList<Question*> singleChoiceQuestions() const { return m_singleChoiceQuestions; }
    QList<Question*> judgeQuestions() const { return m_judgeQuestions; }

    //返回题目标题
    QString groupTitle() const{ return m_groupTitle;}

    //保存作答后的json  --- 输入时保存的路径？
    void saveAnswersToFile(const QString &filePath);

public slots:
    void answersChanged(); //选项答案变化时响应

private:
    void clearQuestions();

    QJsonObject m_moduleList;
    QString m_title;
    QString m_studentName;
    QString m_studentCode;
    QString m_userAnswer;
    
    // 按题型分开存储的题目列表
    QList<Question*> m_questions; // 所有题目集合
    QList<Question*> m_singleChoiceQuestions; // 单选题
    QList<Question*> m_judgeQuestions; // 判断题

    //题型标题一、 二、
    QString m_groupTitle;

    // QJsonArray m_moduleList;
    // QString m_title;
    // QString m_studentName;
    // QString m_studentCode;
    // qint64 m_stuScore;
    // qint64 m_paperScore;

    //


};
